using System;
using System.Collections.Generic;
using System.Text;
using Unitins.Component.PersistenceLayer;
using Unitins.Component.ComponentMaster;

namespace Unitins.Component.Repository.Sepsi
{
    [Serializable]
    public class Usuario : IObject<Usuario>
    {
        #region Fields

        private Int64 idUsuario;
        private Int64 idPessoa;
        private Int64 idUsuarioTipo;
        private String login;
        private String senha;
        private String matricula;

        #endregion Fields

        #region Properties

        public Int64 IdUsuario
        {
            get { return idUsuario; }
            set { idUsuario = value; }
        }

        public Int64 IdPessoa
        {
            get { return idPessoa; }
            set { idPessoa = value; }
        }

        public Int64 IdUsuarioTipo
        {
            get { return idUsuarioTipo; }
            set { idUsuarioTipo = value; }
        }

        public String Login
        {
            get { return login; }
            set { login = value; }
        }

        public String Senha
        {
            get { return senha; }
            set { senha = value; }
        }

        public String Matricula
        {
            get { return matricula; }
            set { matricula = value; }
        }

        #endregion Properties

        #region Constructor

        public Usuario()
        {
        }

        public Usuario(Int64 idUsuario, Int64 idPessoa, Int64 idUsuarioTipo, String login, String senha, String matricula)
        {
            this.IdUsuario = idUsuario;
            this.IdPessoa = idPessoa;
            this.IdUsuarioTipo = idUsuarioTipo;
            this.Login = login;
            this.Senha = senha;
            this.Matricula = matricula;
        }

        #endregion Constructors

        #region Methods Overrides

        public String GetToString()
        {
            return
            (
                "{IdUsuario : " + this.IdUsuario + "} " + Environment.NewLine +
                "{IdPessoa : " + this.IdPessoa + "} " + Environment.NewLine +
                "{IdUsuarioTipo : " + this.IdUsuarioTipo + "} " + Environment.NewLine +
                "{Login : " + this.Login + "} " + Environment.NewLine +
                "{Senha : " + this.Senha + "} " + Environment.NewLine +
                "{Matricula : " + this.Matricula + "} " + Environment.NewLine +
                ""
             );
        }

        public object Clone()
        {
            Usuario objUsuario = new Usuario();

            objUsuario.IdUsuario = this.IdUsuario;
            objUsuario.IdPessoa = this.IdPessoa;
            objUsuario.IdUsuarioTipo = this.IdUsuarioTipo;
            objUsuario.Login = this.Login;
            objUsuario.Senha = this.Senha;
            objUsuario.Matricula = this.Matricula;

            return objUsuario;
        }

        #endregion Methods Overrides

    }

    public enum UsuarioAttribute
    {
        IdUsuario = 0,
        IdPessoa = 1,
        IdUsuarioTipo = 2,
        Login = 3,
        Senha = 4,
        Matricula = 5,
    }
}
